This project allows you to cache any HTTP request sent by one of the tools on your computer. You can think of it as an alternative to Squid, focused on local usage and developer experience
- Can cache EVERY request (with no respect to cache headers, e.g.
Cache-Control: no-cache) - TTL (time to live) for cache entries
- HTTP proxying
- HTTPS proxying with MITM
- explicit & transparent proxying
- Does not connect to upstream at all if no requests need to be done (unlike Squid, which will pre-init TCP connection for speed)
- Configuration based on request metadata (url, method..)
go install github.com/iTrooz/caching-dev-proxy@latest-
(Optional) edit config.yaml, and place it at
~.config/caching-dev-proxy/config.yaml(or specify it when running proxy) -
Run proxy with
caching-dev-proxy- Run your requests through the proxy with e.g.
curl -x 127.0.0.1:8080 https://example.com
- Generate TLS root certificate and key that caching-dev-proxy will use for TLS decryption. For example:
openssl req -x509 -newkey rsa:4096 -keyout ca.key.pem -out ca.crt.pem -days 8250 -nodes -subj "/CN=My CA"- Add this certificate to your system store. On ArchLinux, use
trust anchor <path_to_cert.pem> - Edit config and start proxy as shown above
Note: HTTP transparent proxying uses the Host header, and HTTPS transparent proxying uses SNI to determine the upstream host to send the request to. Unlike squid, the destination IP is ignored entirely, allowing for simple domain name spoofing, e.g. by editing /etc/hosts to make given hosts pass through the proxy.
This tool was made to be used by a developer on their development machine. It should not be let exposed to untrusted parties, and ESPECIALLY NOT be freely usable on the Internet. See:
just run <args>
just build
GPL-2.0-only OR GPL-3.0-or-later with proxy being me (iTrooz) What does that mean ?